export default {};
//=============暴露给Android的方法==================
/**
 * 返回上一页
 */
window.jsHistory = function() {
  return global.historyCallback();
};
/**
 * 显示小弹窗
 */
window.jsShowToast = function(msg) {
  return global.jsShowToastCallback(msg);
};
/**
 * 扫描到NFC后调用
 * @param {*} msg
 */
window.jsNFCReceiver = function(tag) {
  return global.jsNFCReceiverCallback(tag);
};

/**
 * 原生选择完文件后调用
 * @param {*} imgPaths 返回多个图片地址
 */
window.jsSelectPhotoback = function(imgPaths) {
  return global.jsSelectPhotoback(imgPaths);
};

/**
 * 原生拍摄完成后调用
 * @param {*} tag 返回本地文件地址
 */
window.jsShootBack = function(urlStr) {
  return global.jsShootBack(urlStr);
};

window.jsChoosedDateTime = function(dateTimeStr) {
  return global.jsChoosedDateTime(dateTimeStr);
};

//================================================

/**
 * JS回调，用于监听android调用JS方法
 * 暴露给JS的方法
 */
class JavascriptInterface {
  constructor() {}
  //原生物理按键返回上一页
  jsHistory(callback) {
    global.historyCallback = callback;
  }
  //原生调用JS弹窗
  jsShowToast(callback) {
    global.jsShowToastCallback = callback;
  }
  //原生扫描到NFC后调用
  jsNFCReceiver(callback) {
    global.jsNFCReceiverCallback = callback;
  }

  jsSelectPhotoback(callback) {
    global.jsSelectPhotoback = callback;
  }

  jsShootBack(callback) {
    global.jsShootBack = callback;
  }
  jsChoosedDateTime(callback) {
    global.jsChoosedDateTime = callback;
  }
}

/**
 * 提供访问android方法的接口
 * 访问android提供的方法，并暴露方法给JS调用
 */
class AndroidControl {
  constructor() {}

  /**
   * 用于调用原生Toast方法
   * @param {str} msg 字符串类型
   */
  adShowToast(msg) {
    try {
      window.AndroidControl.adShowToast(msg);
    } catch (e) {
      console.log(e);
      console.log("=====在非android环境下访问, 出现该警告是正常的.======");
    }
  }

  /**
   * 用于调用原生拍摄视频、照片的页面
   * @param {str} msg 字符串类型
   */
  adCallShoot() {
    try {
      window.AndroidControl.adCallShoot();
    } catch (e) {
      console.log(e);
      console.log("=====在非android环境下访问, 出现该警告是正常的.======");
    }
  }

  /**
   * 调用原生Android照片选择方法
   * @param selectedPhotos 选择的照片列表，数组形式
   * @param maxCounted
   */
  adChoosePhoto(selectedPhotos, maxCounted) {
    try {
      window.AndroidControl.adChoosePhoto(selectedPhotos, maxCounted);
    } catch (e) {
      console.log(e);
      console.log("=====在非android环境下访问, 出现该警告是正常的.======");
    }
  }

  adChooseDateTime(curDateTime) {
    try {
      window.AndroidControl.adChooseDateTime(curDateTime);
    } catch (e) {
      console.log(e);
      console.log("=====在非android环境下访问, 出现该警告是正常的.======");
    }
  }
}

export { JavascriptInterface, AndroidControl };